import { EnvironmentDetector } from './modules/environmentDetector';
import { ProxyServer } from './modules/proxyServer';

// 用于模拟 VSCode 环境
const mockVscode = {
    window: {
        showInformationMessage: (message: string) => console.log(`[INFO] ${message}`),
        showErrorMessage: (message: string) => console.error(`[ERROR] ${message}`)
    },
    workspace: {
        workspaceFolders: [{ uri: { fsPath: process.cwd() } }]
    }
};

// 覆盖模块导入
(global as any).vscode = mockVscode;

async function runTests() {
    console.log('========== 开始测试 ==========');
    
    // 1. 测试环境检测
    console.log('\n----- 测试环境检测模块 -----');
    const detector = new EnvironmentDetector();
    
    try {
        console.log('检测环境中...');
        const env = await detector.detect();
        console.log('检测结果:', env);
        
        if (env.type === 'podman') {
            console.log('✅ 成功检测到 Podman 环境');
        } else if (env.type === 'docker') {
            console.log('✅ 成功检测到 Docker 环境');
        } else {
            console.log('✅ 未检测到容器环境，将使用内置代理');
        }
    } catch (error) {
        console.error('❌ 环境检测失败:', error);
    }
    
    // 2. 测试代理服务器
    console.log('\n----- 测试代理服务器模块 -----');
    const proxyServer = new ProxyServer();

    try {
        console.log('启动代理服务器...');
        // 使用测试端口8082启动
        const success = await proxyServer.start(8082);
        if (success) {
            console.log('✅ 代理服务器启动成功');
            
            // 更新代理规则
            console.log('更新代理规则...');
            proxyServer.updateProxyRules([
                { path: '/api', target: 'http://localhost:3001' },
                { path: '/', target: 'http://localhost:3000' }
            ]);
            console.log('✅ 代理规则更新成功');
            
            // 等待一段时间后停止服务器
            console.log('5秒后停止服务器...');
            await new Promise(resolve => setTimeout(resolve, 5000));
            
            proxyServer.stop();
            console.log('✅ 代理服务器停止成功');
        } else {
            console.error('❌ 代理服务器启动失败');
        }
    } catch (error) {
        console.error('❌ 代理服务器测试失败:', error);
    }
    
    console.log('\n========== 测试完成 ==========');
}

runTests().catch(error => {
    console.error('测试过程中发生错误:', error);
}); 